<?php
/*
Page fonctions.php

Contient quelques fonctions globales.

Quelques indications : (utiliser l'outil de recherche et rechercher les mentions donnÃ©es)

Liste des fonctions :
--------------------------
pgquery($requete,$number)
connexionbdd()
actualiser_session()
vider_cookie()
--------------------------


Liste des informations/erreurs :
--------------------------
Mot de passe de session incorrect
Mot de passe de cookie incorrect
L'id de cookie est incorrect
--------------------------
*/

function pgquery($requete, $number,$idconnect){
    $query = pg_query($idconnect,$requete) or exit('Erreur SQL : '.pg_result_error().' Ligne : '. __LINE__ .'.'); //requête
    queries();

    /*
    Deux cas possibles ici :
    Soit on sait qu'on a qu'une seule entrée qui sera
    retournée par SQL, donc on met $number à 1
    Soit on ne sait pas combien seront retournées,
    on met alors $number à 2.
    */

    if($number == 1){
        $query1 = pg_fetch_assoc($query);
        return $query1;
    }

    else if($number == 2){
        while($query1 = pg_fetch_assoc($query)){
            $query2[] = $query1;
            /*On met $query1 qui est un array dans $query2 qui
            est un array. Ca fait un array d'arrays :o*/
        }
        return $query2;
    }

    else{ //Erreur
		exit('Argument de pg query non renseigné ou incorrect.');
    }
}

function queries($num = 1){
    global $queries;
    $queries = $queries + intval($num);
}


// remove this method
/*function connexionbdd(){
    return Database::getInstance();
}*/

function actualiser_session($idconnect){
    if(isset($_SESSION['membre_id']) && intval($_SESSION['membre_id']) != 0){ //Vérification id
        //utilisation de la fonction sqlquery, on sait qu'on aura qu'un résultat car l'id d'un membre est unique.
        $retour = pgquery("SELECT id_user, login, mdp FROM utilisateur WHERE id_user = ".intval($_SESSION['membre_id']), 1,$idconnect);

        //Si la requête a un résultat (id est : si l'id existe dans la table membres)
        if(isset($retour['membre_pseudo']) && $retour['membre_pseudo'] != ''){
            if($_SESSION['membre_mdp'] != $retour['membre_mdp']){
                //Dehors vilain pas beau !
                $informations = Array(/*Mot de passe de session incorrect*/
                                    true,
                                    'Session invalide',
                                    'Le mot de passe de votre session est incorrect, vous devez vous reconnecter.',
                                    '',
                                    'membres/connexion.php',
                                    3
                                    );
                require_once('../information.php');
                vider_cookie();
                session_destroy();
                exit();
            }

            else{
                //Validation de la session.
				$_SESSION['membre_id'] = $retour['membre_id'];
				$_SESSION['membre_pseudo'] = $retour['membre_pseudo'];
				$_SESSION['membre_mdp'] = $retour['membre_mdp'];
            }
        }
    }

    else //On vérifie les cookies et sinon pas de session
    {
        if(isset($_COOKIE['membre_id']) && isset($_COOKIE['membre_mdp'])){ //S'il en manque un, pas de session.
            if(intval($_COOKIE['membre_id']) != 0){
                //idem qu'avec les $_SESSION
                $retour = pgquery("SELECT id_user, login, mdp FROM utilisateurs WHERE id_user = ".intval($_COOKIE['membre_id']), 1,$idconnect);

                if(isset($retour['membre_pseudo']) && $retour['membre_pseudo'] != ''){
                    if($_COOKIE['membre_mdp'] != $retour['membre_mdp']){
                        //Dehors vilain tout moche !
                        $informations = Array(/*Mot de passe de cookie incorrect*/
										true,
										'Mot de passe cookie erroné',
										'Le mot de passe conservé sur votre cookie est incorrect vous devez vous reconnecter.',
										'',
										'membres/connexion.php',
										3
										);
                        require_once('../information.php');
                        vider_cookie();
                        session_destroy();
                        exit();
                    }

                    else{
                        //Bienvenue :D
                        $_SESSION['membre_id'] = $retour['membre_id'];
                        $_SESSION['membre_pseudo'] = $retour['membre_pseudo'];
                        $_SESSION['membre_mdp'] = $retour['membre_mdp'];
                    }
                }
            }

            else{ //cookie invalide, erreur plus suppression des cookies.
                $informations = Array(/*L'id de cookie est incorrect*/
								true,
								'Cookie invalide',
								'Le cookie conservant votre id est corrompu, il va donc être détruit vous devez vous reconnecter.',
								'',
								'membres/connexion.php',
								3
								);
                require_once('../information.php');
                vider_cookie();
                session_destroy();
                exit();
            }
        }

        else{
            //Fonction de suppression de toutes les variables de cookie.
            if(isset($_SESSION['membre_id'])) unset($_SESSION['membre_id']);
            vider_cookie();
        }
    }
}

function vider_cookie(){
    foreach($_COOKIE as $cle => $element){
        setcookie($cle, '', time()-3600);
    }
}

function checkpseudo($pseudo,$idconnect){
    if($pseudo == '') return 'empty';
    else if(strlen($pseudo) < 3) return 'tooshort';
    else if(strlen($pseudo) > 20) return 'toolong';

    else{
        $result = pgquery("SELECT COUNT(*) AS nbr FROM utilisateur WHERE login = '".addslashes($pseudo)."'",1,$idconnect);
        global $queries;
        $queries++;

        if($result['nbr'] > 0) return 'exists';
        else return 'ok';
    }
}

function checknom($nom){
	if($nom == '') return 'empty';
    else if(strlen($nom) < 2) return 'nomtooshort';
    else if(strlen($nom) > 30) return 'nomtoolong';

	else{
		if(!preg_match('#^[A-Za-z -]+$#', $nom)) return 'nofigure';
        else return 'ok';
	}
}

function checkmdp($mdp){
    if($mdp == '') return 'empty';
    else if(strlen($mdp) < 6) return 'tooshort';
    else if(strlen($mdp) > 10) return 'toolong';

    else{
        if(!preg_match('#[0-9]{1,}#', $mdp)) return 'nofigure';
        else return 'ok';
    }
}

function checkmdpS($mdp, $mdp2){
    if($mdp != $mdp2 && $mdp != '' && $mdp2 != '') return 'different';
    else return checkmdp($mdp);
}

function checkmail($email,$idconnect){
    if($email == '') return 'empty';
    else if(!preg_match('#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#is', $email)) return 'isnt';

    else{
        $result = pgquery("SELECT COUNT(*) AS nbr FROM utilisateur WHERE email = '".addslashes($email)."'",1,$idconnect);
        global $queries;
        $queries++;

        if($result['nbr'] > 0) return 'exists';
        else return 'ok';
    }
}

function checkmailS($email, $email2){
    if($email != $email2 && $email != '' && $email2 != '') return 'different';
    else return 'ok';
}

function vidersession(){
    foreach($_SESSION as $cle => $element){
        unset($_SESSION[$cle]);
    }
}
?>
